O Orquestrador: O Driver do Compilador
Pense no Driver do Compilador (como o GCC) como um grande maestro. Ele automatiza a transformação complexa do código-fonte legível por humanos em um executável binário. Esse percurso, o Caminho para a Execução, começa em Tempo de Compilação e se estende até Tempo de Carregamento e Tempo de Execução.
Ao utilizar Compilação Separada, o driver processa main.c e sum.c de forma independente. Alterações em um módulo não exigem que todo o projeto seja re-traduzido — apenas o arquivo modificado passa pelo pré-processador (cpp), compilador (cc1), e montador (as) antes do Linker (ld) mescla os arquivos resultantes Arquivos Objeto Relocáveis.
Eficiência e a Hierarquia de Memória
As decisões de layout do Linker para grid[0][0] ou src[0][0] impactam diretamente Rendimento e Latência. Ao alinhar os dados em uma linha de cache de 32 bytes, o driver facilita um padrão de referência Stride-1, minimizando falhas de frio e evitando evicções por varredura coluna a coluna. Em códigos avançados de alto desempenho, paralelismo de laços desenrolados ($4 \times 4$ laço desenrolado) esconde ainda mais mapeamento da memória principal para cache atrasos ao otimizar ciclos de frequência do clock (0x32, 0x1, 0x4, 0x51).